
// Boost Includes ==============================================================
#include <boost/python.hpp>
#include <boost/cstdint.hpp>

// Includes ====================================================================
#include <OpenSG/OSGQuaternion.h>
#include <Wrappers.h>

// Using =======================================================================
using namespace boost::python;

// Module ======================================================================
void Export_src_pyste_Quaternion()
{
    class_< osg::QuaternionBase<float> >("Quaternion", init<  >())
        .def(init< const osg::QuaternionBase<float>& >())
        .def(init< const osg::TransformationMatrix<float>& >())
        .def(init< const osg::VectorInterface<float,osg::VecStorage3<float> >&, const osg::Real32 >())
        .def(init< const osg::VectorInterface<float,osg::VecStorage3<float> >&, const osg::VectorInterface<float,osg::VecStorage3<float> >& >())
        .def("identity", &osg::QuaternionBase<float>::identity, return_value_policy< copy_const_reference >())
        .def("slerp", (osg::QuaternionBase<float> (*)(const osg::QuaternionBase<float>&, const osg::QuaternionBase<float>&, const osg::Real32))&osg::QuaternionBase<float>::slerp)
        .def("setIdentity", &osg::QuaternionBase<float>::setIdentity)
        .def("setValueAsAxisRad", (void (osg::QuaternionBase<float>::*)(const osg::Real32*) )&osg::QuaternionBase<float>::setValueAsAxisRad)
        .def("setValueAsAxisDeg", (void (osg::QuaternionBase<float>::*)(const osg::Real32*) )&osg::QuaternionBase<float>::setValueAsAxisDeg)
        .def("setValueAsQuat", (void (osg::QuaternionBase<float>::*)(const osg::Real32*) )&osg::QuaternionBase<float>::setValueAsQuat)
        .def("setValueAsAxisRad", (void (osg::QuaternionBase<float>::*)(const osg::Real32, const osg::Real32, const osg::Real32, const osg::Real32) )&osg::QuaternionBase<float>::setValueAsAxisRad)
        .def("setValueAsAxisDeg", (void (osg::QuaternionBase<float>::*)(const osg::Real32, const osg::Real32, const osg::Real32, const osg::Real32) )&osg::QuaternionBase<float>::setValueAsAxisDeg)
        .def("setValueAsQuat", (void (osg::QuaternionBase<float>::*)(const osg::Real32, const osg::Real32, const osg::Real32, const osg::Real32) )&osg::QuaternionBase<float>::setValueAsQuat)
        .def("setValue", (void (osg::QuaternionBase<float>::*)(const osg::TransformationMatrix<float>&) )&osg::QuaternionBase<float>::setValue)
        .def("setValueAsAxisRad", (void (osg::QuaternionBase<float>::*)(const osg::VectorInterface<float,osg::VecStorage3<float> >&, osg::Real32) )&osg::QuaternionBase<float>::setValueAsAxisRad)
        .def("setValueAsAxisDeg", (void (osg::QuaternionBase<float>::*)(const osg::VectorInterface<float,osg::VecStorage3<float> >&, osg::Real32) )&osg::QuaternionBase<float>::setValueAsAxisDeg)
        .def("setValue", (void (osg::QuaternionBase<float>::*)(const osg::VectorInterface<float,osg::VecStorage3<float> >&, const osg::VectorInterface<float,osg::VecStorage3<float> >&) )&osg::QuaternionBase<float>::setValue)
        .def("setValueAsAxisRad", (void (osg::QuaternionBase<float>::*)(const osg::Char8*) )&osg::QuaternionBase<float>::setValueAsAxisRad)
        .def("setValueAsAxisDeg", (void (osg::QuaternionBase<float>::*)(const osg::Char8*) )&osg::QuaternionBase<float>::setValueAsAxisDeg)
        .def("setValueAsQuat", (void (osg::QuaternionBase<float>::*)(const osg::Char8*) )&osg::QuaternionBase<float>::setValueAsQuat)
        .def("setValue", (void (osg::QuaternionBase<float>::*)(const osg::Real32, const osg::Real32, const osg::Real32) )&osg::QuaternionBase<float>::setValue)
        .def("getValues", &osgwrap::getValues4<osg::QuaternionBase<osg::Real32> >)
        .def("getValueAsAxisDeg", (void (osg::QuaternionBase<float>::*)(osg::Real32&, osg::Real32&, osg::Real32&, osg::Real32&) const)&osg::QuaternionBase<float>::getValueAsAxisDeg)
        .def("getValueAsAxisRad", (void (osg::QuaternionBase<float>::*)(osg::Real32&, osg::Real32&, osg::Real32&, osg::Real32&) const)&osg::QuaternionBase<float>::getValueAsAxisRad)
        .def("getValueAsQuat", &osgwrap::getValues4<osg::QuaternionBase<osg::Real32> >)
        .def("getValueAsAxisRad", (void (osg::QuaternionBase<float>::*)(osg::VectorInterface<float,osg::VecStorage3<float> >&, osg::Real32&) const)&osg::QuaternionBase<float>::getValueAsAxisRad)
        .def("getValueAsAxisDeg", (void (osg::QuaternionBase<float>::*)(osg::VectorInterface<float,osg::VecStorage3<float> >&, osg::Real32&) const)&osg::QuaternionBase<float>::getValueAsAxisDeg)
        .def("getValue", &osg::QuaternionBase<float>::getValue)
        .def("getValuesOnly", &osg::QuaternionBase<float>::getValuesOnly)
        .def("x", &osg::QuaternionBase<float>::x)
        .def("y", &osg::QuaternionBase<float>::y)
        .def("z", &osg::QuaternionBase<float>::z)
        .def("w", &osg::QuaternionBase<float>::w)
        .def("length", &osg::QuaternionBase<float>::length)
        .def("normalize", &osg::QuaternionBase<float>::normalize)
        .def("invert", &osg::QuaternionBase<float>::invert)
        .def("inverse", &osg::QuaternionBase<float>::inverse)
        .def("multVec", &osg::QuaternionBase<float>::multVec)
        .def("scaleAngle", &osg::QuaternionBase<float>::scaleAngle)
        .def("slerpThis", &osg::QuaternionBase<float>::slerpThis)
        .def("mult", (void (osg::QuaternionBase<float>::*)(const osg::QuaternionBase<float>&) )&osg::QuaternionBase<float>::mult)
        .def("multLeft", &osg::QuaternionBase<float>::multLeft)
        .def("equals", &osg::QuaternionBase<float>::equals)
        .staticmethod("slerp")
        .staticmethod("identity")
        .def( self *= self )
        .def( self == self )
        .def( self != self )
    ;

}

